package cn.edu.ncu.housinghub.entity.message;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

/**
 * 系统消息实体类
 */
@Data
public class SystemMessage {
    private Long messageId; // 主键
    
    @NotNull(message = "接收用户不能为空")
    private Long userId; // 接收用户ID
    
    @NotBlank(message = "消息标题不能为空")
    private String title; // 消息标题
    
    @NotBlank(message = "消息内容不能为空")
    private String content; // 消息内容
    
    @NotBlank(message = "消息类型不能为空")
    private String type; // 消息类型（contract, appointment, house, agent, maintenance, checkout, system, announcement, payment）
    
    private String subType; // 子类型（如：contract_created, contract_signed等）
    
    private Long relatedId; // 关联ID（如合同ID、房源ID等）
    
    private String relatedData; // 关联数据（JSON格式存储额外信息）
    
    @NotNull(message = "消息状态不能为空")
    private Boolean isRead = false; // 是否已读（0=未读，1=已读）
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime; // 创建时间
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime readTime; // 阅读时间
    
    private Boolean isDeleted = false; // 软删除标记（0=未删除，1=已删除）
    
    private Integer priority = 0; // 优先级（0=普通，1=重要，2=紧急）
    
    private String actionUrl; // 操作链接（点击消息后跳转的URL）
    
    private String actionText; // 操作按钮文本
}
